Skip to content

fix(query): preserve discriminator predicates in type filters#263

Open
j-d-ha wants to merge 7 commits into
mainfrom
test/tests-inheritance-query-spec
Open

fix(query): preserve discriminator predicates in type filters#263
j-d-ha wants to merge 7 commits into
mainfrom
test/tests-inheritance-query-spec

Conversation

@j-d-ha

@j-d-ha j-d-ha commented Jun 24, 2026

Copy link
Copy Markdown
Collaborator

Summary

Preserves discriminator predicate metadata when translating C# type filters so downstream query generation can handle them correctly. Documents that OfType<T>(), is, and GetType() type filtering require active discriminator metadata when shared-table discrimination has been disabled.

Changes

  • Wrap translated is predicates and GetType() equality predicates in SqlDiscriminatorPredicateExpression.
  • Preserve negation behavior for GetType() != typeof(...) through the wrapped discriminator predicate.
  • Clarify shared-table discriminator limits in docs/limitations.md and docs/modeling/single-table-design.md.

Validation

  • dotnet build

Release Notes

  • Type filters over shared-table inheritance now require active discriminator metadata; models using HasNoDiscriminator() should use key predicates or concrete DbSet queries when keys already isolate types.

j-d-ha added 6 commits June 24, 2026 09:50
- Enhanced inheritance query tests with SQL assertion checks.
- Verified generated SQL for TPH discriminator and derived type filtering scenarios.
- Improved test reliability by validating expected SQL queries during execution.

docs(query): clarify limitations in type filtering

- Documented support for `GetType` with exact concrete entity types.
- Updated guidance on using `is` and `OfType<T>` for derived type filtering.

refactor(query): handle missing discriminator predicates gracefully

- Added checks for missing discriminator predicates in `OfType<TDerived>` queries.
- Returned unsupported operator messages when discriminator filtering is required but unavailable.
- Ensured consistent behavior across all type hierarchy queries.
…icate validation

- Added SQL assertion checks for `OfType<T>` inheritance query tests.
- Improved handling of missing discriminator predicates for filtered type hierarchies.
- Refactored `CreateFalsePredicate` for better code reusability in query translation.
- Updated documentation to clarify concrete type filtering limits and guidance for derived types.
@github-actions github-actions Bot added the type: fix Bug fix label Jun 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type: fix Bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant